package modelo;

public class CalleConSemaforo extends Calle {

	private Semaforo semaforo;
	
	public CalleConSemaforo(Direccion sentido, Coordenada posicion, Semaforo sem) {
		super(sentido, posicion);
		this.semaforo = sem;
		sem.setUbicacion(this);
	}
	
	@Override
	public Boolean tieneSemaforo() {
		return true;
	}

	public Semaforo getSemaforo() {
		return semaforo;
	}

	public void setSemaforo(Semaforo semaforo) {
		this.semaforo = semaforo;
	}
	
	public synchronized void esperarVerde() {
		try {
			while (this.getSemaforo().getColorActual() != Semaforo.VERDE) {
				wait();
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	public synchronized void pasaQueEstaEnVerde() {
		notifyAll();
	}
}
